package bz.ziro.kanbe.dao;

import java.util.ArrayList;
import java.util.List;

import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Key;

import bz.ziro.kanbe.meta.SiteListMeta;
import bz.ziro.kanbe.model.SiteList;
import bz.ziro.kanbe.model.SiteListData;
import bz.ziro.kanbe.util.KeyFactory;

/**
 * リストDao
 * @author Administrator
 */
public class SiteListDao extends BaseDao<SiteList> {

	/**
	 * メタデータ
	 */
    private static final SiteListMeta listMeta = new SiteListMeta();

    /**
     * リストを検索
     * @param aKey
     * @return
     */
    public static SiteList find(Long aKey) {
        Key key = KeyFactory.createListKey(aKey);
        return Datastore.query(listMeta)
        		.filter(
        			listMeta.key.equal(key)
        		).asSingle();
    }

    /**
     * リストデータの削除
     * @param aKey
     */
    public static void delete(Long aKey) {

    	//リストデータの全件検索
        List<SiteListData> dataList = SiteListDataDao.all(aKey);
        List<Key> keyList = new ArrayList<Key>();
        //キーにすべて設定する
        KeyFactory.addListDataKey(dataList, keyList);
       
        //自身のキーを作成
        Key key = KeyFactory.createListKey(aKey);
        keyList.add(key);

        //削除する
        Datastore.delete(keyList);
    }

    /**
     * リスト全件を取得
     * @return
     */
    public static List<SiteList> all() {
        return Datastore.query(listMeta).asList();
    }

}
